home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Magazin/MacEasy 11
/
Mac Magazin and MacEasy Magazine CD - Issue 11.iso
/
Sharewarebibliothek
/
Entwickler
/
appe Windows 2.0
/
prefs.c
< prev
next >
Wrap
Text File
|
1995-07-04
|
3KB
|
86 lines
// File "prefs.c" -
#include <Folders.h>
#include "prefs.h"
// * **************************************************************************** * //
// * **************************************************************************** * //
Handle GetPrefs(long type, short version) {
short prefsRefNum, saveRefNum;
Handle rsrc, pref=0;
saveRefNum = CurResFile();
if ((prefsRefNum = OpenPrefsFile()) == -1) return(0);
if (! (rsrc = Get1Resource(type, version))) goto GET_PREFS_ERROR;
if (! (pref = NewHandle(GetHandleSize(rsrc)))) goto GET_PREFS_ERROR;
BlockMove(*rsrc, *pref, GetHandleSize(rsrc));
ReleaseResource(rsrc);
GET_PREFS_ERROR:
CloseResFile(prefsRefNum);
UseResFile(saveRefNum);
return(pref);
}
// * **************************************************************************** * //
// * **************************************************************************** * //
void WritePrefs(Handle pref, long type, short version) {
short prefsRefNum, saveRefNum;
Handle rsrc, oldRsrc;
saveRefNum = CurResFile();
if ((prefsRefNum = OpenPrefsFile()) == -1) return;
if (rsrc = Get1Resource(type, version)) RmveResource(rsrc);
if (pref) {
if (! (rsrc = NewHandle(GetHandleSize(pref)))) goto WRITE_PREFS_ERROR;
BlockMove(*pref, *rsrc, GetHandleSize(pref));
AddResource(rsrc, type, version, "\p");
if (ResError()) goto WRITE_PREFS_ERROR;
WriteResource(rsrc);
}
WRITE_PREFS_ERROR:
CloseResFile(prefsRefNum);
UseResFile(saveRefNum);
}
// * **************************************************************************** * //
// * **************************************************************************** * //
short OpenPrefsFile() {
short err=0, prefsRefNum;
FSSpec prefsFile;
if (err = FindFolder(kOnSystemDisk, kPreferencesFolderType, -1,
&prefsFile.vRefNum, &prefsFile.parID)) return(-1);
BlockMove(kPrefsFileName, prefsFile.name, sizeof(prefsFile.name));
prefsRefNum = FSpOpenResFile(&prefsFile, fsRdWrPerm);
if (err = ResError()) {
if ((err != fnfErr) && (err = FSpDelete(&prefsFile))) return(-1);
if (err = CreatePrefsFile(&prefsFile)) return(-1);
prefsRefNum = FSpOpenResFile(&prefsFile, fsRdWrPerm);
}
if (ResError() == fnfErr) return(-1);
UseResFile(prefsRefNum);
return(prefsRefNum);
}
// * **************************************************************************** * //
// * **************************************************************************** * //
short CreatePrefsFile(FSSpecPtr prefsFile) {
short err=0;
FSpCreateResFile(prefsFile, kCreatorType, kPrefsFileType, 0);
return(err = ResError());
}